package com.ncu702.backend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.ncu702.backend.model.dto.articles.ArticleVo;
import com.ncu702.backend.model.entity.Article;
import com.ncu702.backend.model.entity.Comment;
import com.ncu702.backend.model.entity.User;

import java.util.ArrayList;
import java.util.List;

public interface ArticleService extends IService<Article> {

    /**
     * 根据id获取文章内容
     */
    ArticleVo getArticleById(String articleId);


    List<ArticleVo> getArticleByUid(long uid);

    //根据id,删除文章
    Integer deleteArticleById(String articleId);


    /**
     * 获取主页数据
     * @return
     */
    PageInfo<ArticleVo> getAllArticleHome(Integer pageNum, Integer pageSize);
    /**
     * 主页数据根据按最新时间发布排序
     * @return
     */
    PageInfo<ArticleVo> getAllArticleHomeToTime(Integer pageNum, Integer pageSize);

    /**
     * 获取板块信息 根据热度排序desc
     * @return
     */
    PageInfo<ArticleVo> getAllArticleBlock(Integer op,Integer pageNum, Integer pageSize);

    /**
     * 获取板块信息 根据发布时间排序desc
     * @return
     */
    PageInfo<ArticleVo>  getAllArticleBlockToTime(Integer op,Integer pageNum, Integer pageSize);


    /**
     * 获取精华数据
     * @return
     */
    PageInfo<ArticleVo> getAllArticleElite(Integer pageNum, Integer pageSize);
    /**
     * 精华数据根据按最新时间发布排序
     * @return
     */
    PageInfo<ArticleVo> getAllArticleEliteToTime(Integer pageNum, Integer pageSize);

    /**
     * 发布文章
     */
    Integer addArticleByuid(Long uid,
                            String title,
                            Integer label,
                            String summary,
                            Integer editorType,
                            String content,
                            String markdownContent);


    /*
    修改文章
     */
    public Integer updateArticle(long uid,
                                 String articleId,
                                 String title,
                                 Integer label,
                                 String summary,
                                 String content,
                                 Integer editType,
                                 String markdownContext);


    /*
    设置为精华
     */
    Integer addElite(String articleId);


    /*
     取消为精华
  */
    Integer deleteElite(String articleId);


    /*
 设置为精华
  */
    Integer addTop(String articleId);


    /*
     取消为置顶
  */
    Integer deleteTop(String articleId);

    /**
     * 添加阅读量
     */
    Integer updateReadCount(String articleId);

    /**
     * 获取文章作者的图片
     */
    User getInfo(Integer uid);

}
